package com.core.ingenium.model;

import java.io.Serializable;

import java.sql.Timestamp;

import java.util.List;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;


@Entity
@NamedQueries( { @NamedQuery(name = "Plantilla.findAll", query = "select o from Plantilla o") })
@Table(name = "\"plantilla\"")
public class Plantilla implements Serializable {
    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name = "id", nullable = false)
    private int id;
    @Column(name = "introduccion")
    private String introduccion;
    @Column(name = "maxSeccion")
    private int maxSeccion;
    @Column(name = "nombre")
    private String nombre;
    @Column(name = "ultimaModificacion")
    private Timestamp ultimaModificacion;
    @Column(name = "valorMax")
    private int valorMax;
    @Column(name = "valorMin")
    private int valorMin;
    @OneToMany(mappedBy = "plantilla")
    private List<EstudiantePlantilla> lstEstudiantePlantilla;
    @OneToMany(mappedBy = "plantilla")
    private List<Seccion> lstSecciones;
    
    @ManyToOne
    @JoinColumn(name = "carrera")
    private Carrera carrera;
    public Plantilla() {
    }

    public Plantilla(Carrera carrera, int id, String introduccion, int maxSeccion, String nombre,
                     Timestamp ultimaModificacion, int valorMax, int valorMin) {
        this.carrera = carrera;
        this.id = id;
        this.introduccion = introduccion;
        this.maxSeccion = maxSeccion;
        this.nombre = nombre;
        this.ultimaModificacion = ultimaModificacion;
        this.valorMax = valorMax;
        this.valorMin = valorMin;
    }


    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getIntroduccion() {
        return introduccion;
    }

    public void setIntroduccion(String introduccion) {
        this.introduccion = introduccion;
    }

    public int getMaxSeccion() {
        return maxSeccion;
    }

    public void setMaxSeccion(int maxSeccion) {
        this.maxSeccion = maxSeccion;
    }

    public String getNombre() {
        return nombre;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Timestamp getUltimaModificacion() {
        return ultimaModificacion;
    }

    public void setUltimaModificacion(Timestamp ultimaModificacion) {
        this.ultimaModificacion = ultimaModificacion;
    }

    public int getValorMax() {
        return valorMax;
    }

    public void setValorMax(int valorMax) {
        this.valorMax = valorMax;
    }

    public int getValorMin() {
        return valorMin;
    }

    public void setValorMin(int valorMin) {
        this.valorMin = valorMin;
    }

    public List<EstudiantePlantilla> getLstEstudiantePlantilla() {
        return lstEstudiantePlantilla;
    }

    public void setLstEstudiantePlantilla(List<EstudiantePlantilla> lstEstudiantePlantilla) {
        this.lstEstudiantePlantilla = lstEstudiantePlantilla;
    }

    public EstudiantePlantilla addEstudiantePlantilla(EstudiantePlantilla estudiantePlantilla) {
        getLstEstudiantePlantilla().add(estudiantePlantilla);
        estudiantePlantilla.setPlantilla(this);
        return estudiantePlantilla;
    }

    public EstudiantePlantilla removeEstudiantePlantilla(EstudiantePlantilla estudiantePlantilla) {
        getLstEstudiantePlantilla().remove(estudiantePlantilla);
        estudiantePlantilla.setPlantilla(null);
        return estudiantePlantilla;
    }

    public void setCarrera(Carrera carrera) {
        this.carrera = carrera;
    }

    public List<Seccion> getLstSecciones() {
        return lstSecciones;
    }

    public void setLstSecciones(List<Seccion> lstSecciones) {
        this.lstSecciones = lstSecciones;
    }

    public Seccion addSeccion(Seccion seccion) {
        getLstSecciones().add(seccion);
        seccion.setPlantilla(this);
        return seccion;
    }

    public Seccion removeSeccion(Seccion seccion) {
        getLstSecciones().remove(seccion);
        seccion.setPlantilla(null);
        return seccion;
    }

    public Carrera getCarrera() {
        return carrera;
    }
}
